package projeto.administrativo.atividade.cih;

import java.util.ArrayList;
import java.util.List;

import nucleo.comuns.visao.NucleoTab;

import org.zkoss.zkplus.spring.SpringUtil;

import plataforma.base.cdp.ExcecaoRegraNegocio;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico;
import projeto.administrativo.atividade.cdp.KAtividade;
import projeto.administrativo.checklist.cdp.KChecklist;
import projeto.administrativo.checklist.cgd.DaoKChecklist;
import projeto.administrativo.colaboradorexterno.cih.AbaFuncaoServico;
import projeto.comercial.funcaoservico.cdp.FuncaoServico;
import projeto.comercial.funcaoservico.cgd.DaoFuncaoServico;


public class FormDadosKAtividade extends
		FormularioDadosCRUDEstatico<KAtividade> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3825624799729224189L;
	AbaDadosKAtividade abaKAtividade;
	AbaKChecklist abaKChecklist;
	AbaFuncaoServico abaFuncaoServico;

	@Override
	protected List<NucleoTab> definirTabs() {

		List<NucleoTab> listaTabs = new ArrayList<NucleoTab>();
		abaKAtividade = new AbaDadosKAtividade();
		abaKChecklist = new AbaKChecklist();
		abaFuncaoServico = new AbaFuncaoServico();

		listaTabs.add(abaKAtividade);
		listaTabs.add(abaKChecklist);
		listaTabs.add(abaFuncaoServico);

		return listaTabs;
	}

	@Override
	protected void preencherDadosObjeto(KAtividade objeto) {

		objeto.setDescricao(abaKAtividade.getCampoDescricao().getValue());
		objeto.setListaKChecklist(abaKChecklist.getSetKChecklist());
		objeto.setFuncoes(abaFuncaoServico.getSetFuncaoServico());

	}

	@Override
	protected void preencherDadosTela(KAtividade objeto)
			throws ExcecaoRegraNegocio {
		
		
		abaKAtividade.getCampoDescricao()
				.setValue(objeto.getDescricao());
		abaKAtividade.campoDescricao.setFocus(true);
		abaKAtividade.campoDescricao.focus();
		
		
		//dados kchecklist
				DaoKChecklist daoKChecklist= SpringUtil.getApplicationContext().getBean(
						DaoKChecklist.class);
				List<KChecklist> todasKChecklists = daoKChecklist.recuperarTodosAtivoComOrdenacao("descricao");

				abaKChecklist.setKChecklist(objeto.getListaKChecklist(), todasKChecklists);
				
				//dados funcoes de servico
				DaoFuncaoServico daoDaoFuncaoServico = SpringUtil.getApplicationContext().getBean(
						DaoFuncaoServico.class);
				List<FuncaoServico> todasFuncoes = daoDaoFuncaoServico.recuperarTodosAtivoComOrdenacao("descricao");

				abaFuncaoServico.setFuncaoServico(objeto.getFuncoes(), todasFuncoes);			

	}
	
	public void configurarExtensao() {
		if (getModoExibicao() == ModoExibicao.NOVO) {
			
			
			//kchecklist
			
			DaoKChecklist daoKChecklist  = SpringUtil.getApplicationContext().getBean(
					DaoKChecklist.class);
			List<KChecklist> todasKChecklist = daoKChecklist.recuperarTodosAtivoComOrdenacao("descricao");

			abaKChecklist.setKChecklist(getObjetoCadastroDados().getListaKChecklist(), todasKChecklist);
					
			//funcoes de servico
			
			DaoFuncaoServico daoFuncaoServico  = SpringUtil.getApplicationContext().getBean(
					DaoFuncaoServico.class);
			List<FuncaoServico> todasFuncoes = daoFuncaoServico.recuperarTodosAtivoComOrdenacao("descricao");

			abaFuncaoServico.setFuncaoServico(getObjetoCadastroDados().getFuncoes(), todasFuncoes);

			
			
		}

	}
	
	@Override
	protected void configurarConstraints() {
		abaKAtividade.campoDescricao.setConstraint("no empty");		
	}

	@Override
	public boolean isValid() {
		return abaKAtividade.isValid();
	}
}
